//
//  ZHIMGroupManagerDelegate.h
//  ZHIMCore
//
//  Created by Chen Zhangli on 2021/1/18.
//

#import <Foundation/Foundation.h>
#import "ZHIMGroup.h"

@protocol ZHIMGroupManagerDelegate <NSObject>

@optional

/// 用户A邀请用户B入群,用户B接收到该回调（暂不支持）
/// @param groupId 群组Id
/// @param inviter 邀请者
/// @param message 邀请信息
- (void)groupInvitationDidReceive:(NSString *)groupId
                          inviter:(NSString *)inviter
                          message:(NSString *)message;


/// 用户B同意用户A的入群邀请后，用户A接收到该回调（暂不支持）
/// @param group 群组
/// @param invitee 被邀请者
- (void)groupInvitationDidAccept:(ZHIMGroup *)group
                         invitee:(NSString *)invitee;


/// 用户B拒绝用户A的入群邀请后，用户A接收到该回调（暂不支持）
/// @param group 群组
/// @param invitee 被邀请者
/// @param reason 拒绝理由
- (void)groupInvitationDidDecline:(ZHIMGroup *)group
                          invitee:(NSString *)invitee
                           reason:(NSString *)reason;


/// 群组的群主收到用户的入群申请（暂不支持）
/// @param group 群组
/// @param userId 申请者
/// @param reason 申请者的附属信息
- (void)joinGroupRequestDidReceive:(ZHIMGroup *)group
                              user:(NSString *)userId
                            reason:(NSString *)reason;


/// 群主拒绝用户A的入群申请后，用户A会接收到该回调（暂不支持）
/// @param groupId 群组Id
/// @param reason 拒绝理由
- (void)joinGroupRequestDidDecline:(NSString *)groupId
                            reason:(NSString *)reason;


/// 群主同意用户A的入群申请后，用户A会接收到该回调（暂不支持）
/// @param group 群组
- (void)joinGroupRequestDidApprove:(ZHIMGroup *)group;


/// 群组列表发生变化
/// @param groups 群组列表
- (void)groupListDidChange:(NSArray *)groups;


/// 有成员被加入禁言列表（暂不支持）
/// @param group 群组
/// @param mutedMembers 被禁言的成员
- (void)groupMuteListDidChange:(ZHIMGroup *)group
             addedMutedMembers:(NSArray *)mutedMembers;


/// 有成员被移出禁言列表（暂不支持）
/// @param group 群组
/// @param members 移出禁言列表的成员
- (void)groupMuteListDidChange:(ZHIMGroup *)group
           removedMutedMembers:(NSArray *)members;


/// 群组全部禁言状态变化（暂不支持）
/// @param group 群组
/// @param muted 是否被全部禁言
- (void)groupAllMemberMuteChanged:(ZHIMGroup *)group
                 isAllMemberMuted:(BOOL)muted;


/// 有成员被加入管理员列表（暂不支持）
/// @param group 群组
/// @param admin 加入管理员列表的成员
- (void)groupAdminListDidChange:(ZHIMGroup *)group
                     addedAdmin:(NSString *)admin;


/// 有成员被移出管理员列表（暂不支持）
/// @param group 群组
/// @param admin 移出管理员列表的成员
- (void)groupAdminListDidChange:(ZHIMGroup *)group
                   removedAdmin:(NSString *)admin;


/// 群主发生改变（暂不支持）
/// @param group 群组
/// @param newOwnerId 新群主
/// @param oldOwnerId 原群主
- (void)groupOwnerDidChange:(ZHIMGroup *)group
                   newOwner:(NSString *)newOwnerId
                   oldOwner:(NSString *)oldOwnerId;


/// 有用户加入群组
/// @param group 加入的群组
/// @param userIds 加入者
- (void)usersDidJoinGroup:(ZHIMGroup *)group
                    users:(NSArray *)userIds;


/// 有用户退出群组
/// @param group 退出的群组
/// @param userIds 退出者
- (void)usersDidLeaveGroup:(ZHIMGroup *)group
                     users:(NSArray *)userIds;


/// 群公告发生改变
/// @param group 群组
/// @param announcement 群公告
- (void)groupAnnouncementDidChange:(ZHIMGroup *)group
                      announcement:(NSString *)announcement;


/// 群名称发生改变
/// @param group 群组
/// @param groupName 群名称
- (void)groupNameDidChange:(ZHIMGroup *)group
                      groupName:(NSString *)groupName;


/// 解散群
/// @param group 群组
- (void)groupDidDestroy:(ZHIMGroup *)group;

@end
